查看原文
其他

精通Linux系列十一:为什么组长发我的文件我打不开?(文件压缩和打包)

拾叁 更AI 2023-10-21

精通Linux系列点击关注公众号,AI&编程干货及时送达   


文件压缩和打包

命令含义
tar将多个文件打包成一个文件。
gzip用GNU Zip(压缩)文件。
gunzip解压GNU Zip文件。
bzip2以BZip格式压缩文件。
bunzip2解压BZip文件。
bzcat通过标准输入/输出压缩/解压BZip文件。
compress使用传统的Unix压缩压缩文件。
uncompress使用传统的Unix压缩解压文件。
zcat通过标准输入/输出压缩/解压文件(gzip或compress)
zip以Windows Zip格式压缩文件。
unzip解压Windows Zip文件。
munpack提取MIME数据至文件。
mpack将文件转换为MIME格式。

Linux可以将文件压缩成各种格式并解压。最流行的格式是GNU Zip(gzip),其压缩文件以*.gz为扩展名,以及BZip,使用.bz2扩展名。其他常见格式包括来自Windows系统的Zip文件(.zip扩展名),xz文件(.xz.lzma扩展名),以及偶尔的经典Unix压缩(.Z*扩展名)。

相关技术包括将二进制文件转换为文本格式,以便(例如)在电子邮件消息中传输。现在,这种操作通常通过附件和MIME工具自动完成,但我们将介绍可以从命令行完成此操作的munpack程序。

tar

stdin  stdout  - 文件  -- opt  --help  --version

tar [选项] [文件]

tar程序将多个文件和目录打包成一个文件以便于传输,可以选择压缩。它最初是用于备份文件到磁带驱动器的;它的名字代表的是“磁带归档”。Tar文件是Linux最常见的文件打包格式。

→ tar -czf myarchive.tar.gz mydir      创建
→ ls -lG myarchive.tar.gz
-rw-r--r-- 1 smith 350 Nov  7 14:09 myarchive.tar.gz
→ tar -tf myarchive.tar.gz             列出内容
mydir/
mydir/dir/
mydir/dir/file10
mydir/file1
mydir/file2
...
→ tar -xf myarchive.tar.gz             解压

如果你在命令行指定了文件,只有那些文件会被处理:

→ tar -xvf myarchive.tar myfile myfile2 myfile3

否则,整个归档文件会被处理。

有用的选项

-c创建一个归档文件。你需要在命令行列出输入的文件和目录。
-r将文件追加到现有的归档文件中。
-u将新的/改变的文件追加到现有的归档文件中。
-A将一个归档文件追加到另一个的末尾:例如,tar -A -f first.tar second.tarsecond.tar的内容追加到first.tar。这不适用于压缩的归档文件。
-t列出(测试)归档文件。
-x从归档文件中提取文件。
-f file从给定的文件读取归档文件,或者将归档文件写入给定的文件。这通常是硬盘上的tar文件(比如myarchive.tar),也可以是磁带驱动器(比如*/dev/tape*)。
-d对比(比较)归档文件和文件系统。
-z使用gzip压缩。
-j使用 bzip2(布劳斯-惠勒)压缩.
-Z使用 Unix压缩.
-v详细模式:打印额外信息.
-h跟随符号链接,而不仅仅是复制它们.
-p当提取文件时,恢复它们的原始权限和所有权.

gzip

stdin  stdout  - 文件  -- 选项  --帮助  --版本

gzip [选项] [文件]
gunzip [选项] [文件]
zcat [选项] [文件]

gzip 和 gunzip 可以压缩和解压缩GNU Zip格式的文件。在某些情况下,原始文件可能会被删除。压缩文件的扩展名为*.gz*。

样本命令

gzip 文件压缩 文件 生成 *文件.gz*。原始的 文件 将被删除.
gzip -c 文件在标准输出上生成压缩数据.
cat *文件`*gzip`
gunzip 文件.gz解压缩 文件.gz  生成 *文件*。原始的 文件.gz  将被删除.
gunzip -c 文件.gz在标准输出上解压数据.
cat *文件`*.gz gunzip`
zcat 文件.gz在标准输出上解压数据.
tar -czf tar文件 目录将目录 目录 打包成一个gzip压缩的tar文件.使用 -cvzf 来在处理时打印文件名.

bzip2

stdin  stdout  - 文件  -- 选项  --帮助  --版本

bzip2 [选项] [文件]
bunzip2 [选项] [文件]
bzcat [选项] [文件]

bzip2 和 bunzip2 可以压缩和解压缩Burrows–Wheeler格式的文件。在某些情况下,原始文件可能会被删除。压缩文件的扩展名为 .bz2

样本命令

bzip2 文件压缩 文件 生成 *文件.bz2*。原始的 文件 将被删除.
bzip2 -c 文件在标准输出上生成压缩数据.
cat 文件 `bzip2`
bunzip2 文件.bz2解压缩 文件.bz2 生成 *文件*。原始的 文件.bz2 将被删除.
bunzip2 -c 文件.bz2在标准输出上解压数据.
cat 文件`.bz2bunzip2`
bzcat 文件.bz2在标准输出上解压数据.
tar -cjf tar文件 目录将目录 目录 打包成一个bzipped的tar文件.使用 -cvjf 来在处理时打印文件名.

compress

stdin  stdout  - 文件  -- 选项  --帮助  --版本

compress [选项] [文件]
uncompress [选项] [文件]
zcat [选项] [文件]

compress 和 uncompress 可以压缩和解压缩标准Unix压缩格式 (Lempel Ziv)的文件。在某些情况下,原始文件可能会被删除。压缩文件的扩展名为 .Z

样本命令

compress 文件压缩 文件 生成 *文件.Z*。原始的 文件 将被删除.
compress -c 文件在标准输出上生成压缩数据.
cat *文件`*compress`
uncompress 文件.Z解压缩 文件.Z  生成 *文件*。原始的 文件.Z  将被删除.
uncompress -c 文件.Z在标准输出上解压数据.
cat *file`*.Zuncompress`
tar -cZf tarfile dir将目录 dir 打包为一个压缩的 tar 文件。使用 -cvZf 在处理过程中打印文件名。

zip

stdin  stdout  - file  -- opt  --help  --version

zip [选项] [文件]

zipunzip(压缩和解压)用于操作 Windows Zip 格式的文件。压缩文件的扩展名为 .zip。不同于大多数其他 Linux 压缩命令,zip并不会删除原始文件。

zip  myfile.zip file1 file2 file3 ...打包。
zip  myfile.zip file1 file2 file3 ...打包。
zip -r  myfile.zip  dirname递归打包。
unzip -l  myfile.zip列出内容。
unzip  myfile.zip解包。

munpack

stdin  stdout  - file  --opt  --help  --version

munpack [选项] 邮件文件
mpack [选项] 文件

现代电子邮件程序可以轻松地发送和接收附件,我们很少会去考虑它,但情况并非一直如此。像munpack(解包邮件)这样的程序是为了直接在命令行上处理附件而创建的,它们可以将附件添加到邮件消息中或者从中提取出来。例如,如果你有一个文件 messagefile,其中包含一个 JPEG 图像和一个 PDF 文件作为附件,munpack可以将这两个附件都提取为文件:

→ munpack messagefile
beautiful.jpg (image/jpeg)
researchpaper.pdf (application/pdf)

它的伙伴程序,mpack(打包邮件),做的是相反的事情,将一个或多个文件作为附件插入到 MIME 格式的文件中。在这里,我们创建了一个包含 MIME 编码的图像 photo.jpg 的文件 attachment.mime

→ mpack -o attachment.mime photo.jpg
Subject: My photo

推荐阅读

··································

你好,我是拾叁,7年开发老司机、互联网两年外企5年。怼得过阿三老美,也被PR comments搞崩溃过。这些年我打过工,创过业,接过私活,也混过upwork。赚过钱也亏过钱。一路过来,给我最深的感受就是不管学什么,一定要不断学习。只要你能坚持下来,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯和编程知识,帮你积累弯道超车的资本。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存